import service from "@/utils/request";
import axios from "axios";

const uploadImgUrl =  process.env.VUE_APP_BASE_API + "/common/upload"

/**
 * get请求
 * @param url
 * @param parameter
 * @param config
 * @returns {*}
 */
export function getAction(url, parameter={},config={}) {
  return service({
    url: url,
    method: 'get',
    params: parameter,
    ...config
  })
}

//get 简单化
export async function getActionSimple(url, parameter,config) {
  try {
    const { code, data, msg } = await getAction(url, parameter,config)
    return code===200 ? Promise.resolve(data) : Promise.reject(msg)
  } catch (e) {
    return Promise.reject(e)
  }
}
export function putAction(url, parameter) {
  return service({
    url: url,
    method: 'put',
    data: parameter
  })
}


/**
 * 文件上传 用于富文本上传图片
 * @param url
 * @param parameter
 * @param config 配置对象
 * @returns {*}
 */
export function uploadAction(url, parameter,config={}) {
  return axios({
    url: url,
    data: parameter,
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data',  // 文件上传
    },
    ...config
  })
  //判断是否有headers,如果有取出来,然后设置上,然后删掉
  // let {headers} =config
  // if (headers){
  //   Reflect.deleteProperty(config,'headers')
  // }
  // return axios({
  //   url: url,
  //   data: parameter,
  //   method: 'post',
  //   headers: {
  //     'Content-Type': 'multipart/form-data',  // 文件上传
  //     ...headers,
  //   },
  //   ...config
  // })
}

/**
 * uploadAction的包装
 * @param url
 * @param parameter
 * @param config
 * @returns {Promise<*>}
 */
export async function uploadActionSimple(url=uploadImgUrl, parameter,config={}){
  try {
    let res = await uploadAction(uploadImgUrl, parameter, config )
    console.log("图片上传信息",res.data)
    let {data:{code,msg,url:urls,fileName}} = res
    if (code === 200){
      return process.env.VUE_APP_BASE_API +fileName
    }else{
      return Promise.reject(msg)
    }
  } catch (e) {
    console.log("上传文件异常",e)
    return Promise.reject(e)
  }
}

/**
 * 下载文件 用于excel导出
 * @param url
 * @param parameter
 * @returns {*}
 */
export function downFile(url, parameter) {
  return service({
    url: url,
    params: parameter,
    method: 'get',
    responseType: 'blob',
    timeout: 60 * 1000 * 100
  })
}
